软件应用 | 使用Stata清洗问卷数据
来源:简书(链接:https://www.jianshu.com/p/440c58523714)
作者:寒见
本文转载自公众号计量经济学
在做问卷时,回收回来的问卷会有诸多错漏。因此问卷回收之后,首先要进行数据清洗,清洗完毕后才可进行分析。问卷清洗的工具有多种,如Excel、SPSS、stata等。本文将总结使用stata清洗问卷数据的几个常用的简单步骤,供大家学习参考。
Part1剔除问卷回答时长过短的问卷
一份问卷的题目长度一般在10-25道题间,一般以多选题为主。一个用户完成这样一份问卷,至少需要一分钟。为了剔除那些不认真填答的用户,有必要在问卷发出时就设置答卷时长统计。假如答卷时长的字段名称为time
,那么在回收问卷后,可以在stata中用以下命令剔除这些用户:
drop if time<60
Part2删除内部员工数据
我们在发布问卷时,为了测试问卷是否能正常送达、是否能正常填答,通常会把几名内部人员的手机号/后台ID也放进问卷调研样本中。所以在回收问卷时,有几份问卷是内部人员填答的,是需要剔除的。假如此次给内部人员123
、234
、345
都发放了问卷,可以在stata中用以下命令剔除这三个内部用户:
drop if id=123 | id=234 | id=345
Part3对年龄和职业进行交叉剔除
许多调研为了统计用户的人口特征,都会在问卷最后附上人口学相关的单选题(如年龄、职业、收入)。然而,有部分用户填答问卷时不够认真,会盲选答案,为了保证问卷结果的可信度,可以考虑是否有必要把这些用户剔除掉。
下面我举一个例子来说明:
e2为年龄题:
e4为职业题:
按照常理,我们都知道人们一般在60岁后退休,50岁以下退休的人极为少见。当样本量足够的情况下,可以考虑把选择了50岁以下退休的用户数据剔除,即是把年龄选了50岁以下且e4的职业选了“12退休”的用户剔除,剔除命令如下:
drop if e2==1 & e4==12
drop if e2==2 & e4==12
drop if e2==3 & e4==12
drop if e2==4 & e4==12
drop if e2==5 & e4==12
drop if e2==6 & e4==12
drop if e2==6 & e4==11
drop if e2==7 & e4==11
Part4根据排他项逻辑补充数据
排他项是多选题中常见的选项,如下题:
第9个选项是明显的排他项,当选择了9时,其他选项都会变为不可选择的状态。一些问卷系统在导出选择了排他项的数据时,无法自动补充其他选项的数据,导出后会显示如下:
由图可见,除了f9补充了数字1,其余选项都是空白,这种数据是无法统计的,必须把f1-f8的数据补充为0才可以统计。补充命令如下(以f1为例):
replace f1=0 if f9==1
补充完毕后,数据会显示如下:
Part5处理多选题的其他项
在多选题中出现其他项时,默认会让用户填写文本内容。当用户填写了其他项的文本内容时,数据导出后会直接显示文本内容。要知道,文本内容是无法直接统计的,统计工具只能统计数字。
如下图,g9是一个其他项。
当用户选择了g9,导出的问卷数据可能会显示如下:
g9的数据是无法统计的,因此需要根据g9来新建一个变量g9_other
来计算。命令如下:
gen g9_other=.
replace g9_other=1 if g9!="0"&g9!=.
replace g9_other=0 if g9=="0"
label var g9_other "其它项(0/1)"
执行命令后,数据显示如下:
Part6定义权重
在实际的问卷统计过程中,时常会用到加权的概念。所谓加权,就是当样本的构成跟总体的构成不一致时,可能会导致回收的问卷结果无法反应总体的特征,这时候就需要使用加权,让样本乘以一个加权系数,使得样本构成与总体构成一致(由于统计要求不同,对加权系数的计算也会不同,这里对加权系数就不展开论述了)。
例如,h题为性别题,选项1为男性,选项2为女性。男性的加权系数为1.6,女性的加权系数0.4,这时需要给数据新增一个加权变量,命令如下:
gen weight=.
replace weight=1.6 if h==1
replace weight=0.4 if h==2
执行命令完毕后就会看到原始数据多了一列名为weight
变量的数据。
点击搜索你感兴趣的内容吧
往期推荐
数据Seminar
这里是大数据、分析技术与学术研究的三叉路口
推荐 | 青酱
欢迎扫描👇二维码添加关注